/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aiaudio.processing;

import aiaudio.processing.base.AlgorithmParameters;
import aiaudio.processing.network.NetworkCalculationAlgorithmParameters;
import aiaudio.processing.prediction.MakePredictionAlgorithmParameters;
import aiaudio.processing.ratings.PreprocessRatingParameters;
import aiaudio.processing.ratings.normilize.DefaultValue;
import aiaudio.processing.ratings.normilize.InitialData;
import aiaudio.processing.ratings.normilize.Normalizaton;
import aiaudio.processing.reduce.KMeansDimensionReducingParameters;
import aiaudio.processing.split.DataSetSplittingAlgorithmParameters;

/**
 *
 * @author nastya
 */
public class ProcessingAlgorithmParameters extends AlgorithmParameters {

    private NetworkCalculationAlgorithmParameters networkParameters;
    private MakePredictionAlgorithmParameters predictionParameters;
    private KMeansDimensionReducingParameters reducingParameters;
    private PreprocessRatingParameters ratingParameters;
    private DataSetSplittingAlgorithmParameters splitParameters;

    public ProcessingAlgorithmParameters() {
        networkParameters = new NetworkCalculationAlgorithmParameters();
        predictionParameters = new MakePredictionAlgorithmParameters(10);
        reducingParameters = new KMeansDimensionReducingParameters();
        ratingParameters = new PreprocessRatingParameters();
        splitParameters = new DataSetSplittingAlgorithmParameters(0.5f);
    }

    NetworkCalculationAlgorithmParameters getNetworkParameters() {
        return networkParameters;
    }

    MakePredictionAlgorithmParameters getPredictionParameters() {
        return predictionParameters;
    }

    PreprocessRatingParameters getRatingParameters() {
        return ratingParameters;
    }

    KMeansDimensionReducingParameters getReducingParameters() {
        return reducingParameters;
    }

    DataSetSplittingAlgorithmParameters getSplitParameters() {
        return splitParameters;
    }

    
    public void setTrainingSetSize(int trainingSetSize) {
        networkParameters.setTrainingSetSize(trainingSetSize);
    }

    public void setMinSimilarity(double minSimilarity) {
        networkParameters.setMinSimilarity(minSimilarity);
    }

    public void setLearningCicles(int learningCicles) {
        networkParameters.setLearningCicles(learningCicles);
    }

    public void setDivisor(double divisor) {
        networkParameters.setDivisor(divisor);
    }

    public void setMaxPositionCount(int maxPositionCount) {
        predictionParameters.setMaxPositionCount(maxPositionCount);
    }

    public void setNormalizaton(Normalizaton normalizaton) {
        ratingParameters.setNormalizaton(normalizaton);
    }

    public void setInitialData(InitialData initialData) {
        ratingParameters.setInitialData(initialData);
    }

    public void setDefaultValue(DefaultValue defaultValue) {
        ratingParameters.setDefaultValue(defaultValue);
    }

    public void setTestSetSize(long testSetSize) {
        reducingParameters.setTestSetSize(testSetSize);
    }

    public void setDictionarySize(int dictionarySize) {
        reducingParameters.setDictionarySize(dictionarySize);
    }

    public void setDictionaryCount(int dictionaryCount) {
        reducingParameters.setDictionaryCount(dictionaryCount);
    }

    public void setSplittingCoefficient(float splittingCoefficient) {
        splitParameters.setSplittingCoefficient(splittingCoefficient);
    }
}
